type: object
properties:
  type:
    description: 'the type of the resource'
    type: string
    enum:
      - MeshHTTPRoute
  mesh:
    description: 'Mesh is the name of the Kuma mesh this resource belongs to. It may be omitted for cluster-scoped resources.'
    type: string
    default: default
  name:
    description: 'Name of the Kuma resource'
    type: string
  spec:
    description: Spec is the specification of the Kuma MeshHTTPRoute resource.
    properties:
      targetRef:
        description: |-
          TargetRef is a reference to the resource the policy takes an effect on.
          The resource could be either a real store object or virtual resource
          defined inplace.
        properties:
          kind:
            description: Kind of the referenced resource
            enum:
              - Mesh
              - MeshSubset
              - MeshGateway
              - MeshService
              - MeshServiceSubset
              - MeshHTTPRoute
            type: string
          mesh:
            description: Mesh is reserved for future use to identify cross mesh resources.
            type: string
          name:
            description: |-
              Name of the referenced resource. Can only be used with kinds: `MeshService`,
              `MeshServiceSubset` and `MeshGatewayRoute`
            type: string
          proxyTypes:
            description: |-
              ProxyTypes specifies the data plane types that are subject to the policy. When not specified,
              all data plane types are targeted by the policy.
            items:
              enum:
                - Sidecar
                - Gateway
              type: string
            minItems: 1
            type: array
          tags:
            additionalProperties:
              type: string
            description: |-
              Tags used to select a subset of proxies by tags. Can only be used with kinds
              `MeshSubset` and `MeshServiceSubset`
            type: object
        type: object
      to:
        description: To matches destination services of requests and holds configuration.
        items:
          properties:
            hostnames:
              description: |-
                Hostnames is only valid when targeting MeshGateway and limits the
                effects of the rules to requests to this hostname.
                Given hostnames must intersect with the hostname of the listeners the
                route attaches to.
              items:
                type: string
              type: array
            rules:
              description: |-
                Rules contains the routing rules applies to a combination of top-level
                targetRef and the targetRef in this entry.
              items:
                properties:
                  default:
                    description: |-
                      Default holds routing rules that can be merged with rules from other
                      policies.
                    properties:
                      backendRefs:
                        items:
                          description: BackendRef defines where to forward traffic.
                          properties:
                            kind:
                              description: Kind of the referenced resource
                              enum:
                                - Mesh
                                - MeshSubset
                                - MeshGateway
                                - MeshService
                                - MeshServiceSubset
                                - MeshHTTPRoute
                              type: string
                            mesh:
                              description: Mesh is reserved for future use to identify cross mesh resources.
                              type: string
                            name:
                              description: |-
                                Name of the referenced resource. Can only be used with kinds: `MeshService`,
                                `MeshServiceSubset` and `MeshGatewayRoute`
                              type: string
                            proxyTypes:
                              description: |-
                                ProxyTypes specifies the data plane types that are subject to the policy. When not specified,
                                all data plane types are targeted by the policy.
                              items:
                                enum:
                                  - Sidecar
                                  - Gateway
                                type: string
                              minItems: 1
                              type: array
                            tags:
                              additionalProperties:
                                type: string
                              description: |-
                                Tags used to select a subset of proxies by tags. Can only be used with kinds
                                `MeshSubset` and `MeshServiceSubset`
                              type: object
                            weight:
                              default: 1
                              minimum: 0
                              type: integer
                          type: object
                        type: array
                      filters:
                        items:
                          properties:
                            requestHeaderModifier:
                              description: |-
                                Only one action is supported per header name.
                                Configuration to set or add multiple values for a header must use RFC 7230
                                header value formatting, separating each value with a comma.
                              properties:
                                add:
                                  items:
                                    properties:
                                      name:
                                        maxLength: 256
                                        minLength: 1
                                        pattern: ^[a-z0-9!#$%&'*+\-.^_\x60|~]+$
                                        type: string
                                      value:
                                        type: string
                                    required:
                                      - name
                                      - value
                                    type: object
                                  maxItems: 16
                                  type: array
                                  x-kubernetes-list-map-keys:
                                    - name
                                  x-kubernetes-list-type: map
                                remove:
                                  items:
                                    type: string
                                  maxItems: 16
                                  type: array
                                set:
                                  items:
                                    properties:
                                      name:
                                        maxLength: 256
                                        minLength: 1
                                        pattern: ^[a-z0-9!#$%&'*+\-.^_\x60|~]+$
                                        type: string
                                      value:
                                        type: string
                                    required:
                                      - name
                                      - value
                                    type: object
                                  maxItems: 16
                                  type: array
                                  x-kubernetes-list-map-keys:
                                    - name
                                  x-kubernetes-list-type: map
                              type: object
                            requestMirror:
                              properties:
                                backendRef:
                                  description: TargetRef defines structure that allows attaching policy to various objects
                                  properties:
                                    kind:
                                      description: Kind of the referenced resource
                                      enum:
                                        - Mesh
                                        - MeshSubset
                                        - MeshGateway
                                        - MeshService
                                        - MeshServiceSubset
                                        - MeshHTTPRoute
                                      type: string
                                    mesh:
                                      description: Mesh is reserved for future use to identify cross mesh resources.
                                      type: string
                                    name:
                                      description: |-
                                        Name of the referenced resource. Can only be used with kinds: `MeshService`,
                                        `MeshServiceSubset` and `MeshGatewayRoute`
                                      type: string
                                    proxyTypes:
                                      description: |-
                                        ProxyTypes specifies the data plane types that are subject to the policy. When not specified,
                                        all data plane types are targeted by the policy.
                                      items:
                                        enum:
                                          - Sidecar
                                          - Gateway
                                        type: string
                                      minItems: 1
                                      type: array
                                    tags:
                                      additionalProperties:
                                        type: string
                                      description: |-
                                        Tags used to select a subset of proxies by tags. Can only be used with kinds
                                        `MeshSubset` and `MeshServiceSubset`
                                      type: object
                                  type: object
                                percentage:
                                  anyOf:
                                    - type: integer
                                    - type: string
                                  description: |-
                                    Percentage of requests to mirror. If not specified, all requests
                                    to the target cluster will be mirrored.
                                  x-kubernetes-int-or-string: true
                              required:
                                - backendRef
                              type: object
                            requestRedirect:
                              properties:
                                hostname:
                                  description: |-
                                    PreciseHostname is the fully qualified domain name of a network host. This
                                    matches the RFC 1123 definition of a hostname with 1 notable exception that
                                    numeric IP addresses are not allowed.


                                    Note that as per RFC1035 and RFC1123, a *label* must consist of lower case
                                    alphanumeric characters or '-', and must start and end with an alphanumeric
                                    character. No other punctuation is allowed.
                                  maxLength: 253
                                  minLength: 1
                                  pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
                                  type: string
                                path:
                                  description: |-
                                    Path defines parameters used to modify the path of the incoming request.
                                    The modified path is then used to construct the location header.
                                    When empty, the request path is used as-is.
                                  properties:
                                    replaceFullPath:
                                      type: string
                                    replacePrefixMatch:
                                      type: string
                                    type:
                                      enum:
                                        - ReplaceFullPath
                                        - ReplacePrefixMatch
                                      type: string
                                  required:
                                    - type
                                  type: object
                                port:
                                  description: |-
                                    Port is the port to be used in the value of the `Location`
                                    header in the response.
                                    When empty, port (if specified) of the request is used.
                                  format: int32
                                  maximum: 65535
                                  minimum: 1
                                  type: integer
                                scheme:
                                  enum:
                                    - http
                                    - https
                                  type: string
                                statusCode:
                                  default: 302
                                  description: StatusCode is the HTTP status code to be used in response.
                                  enum:
                                    - 301
                                    - 302
                                    - 303
                                    - 307
                                    - 308
                                  type: integer
                              type: object
                            responseHeaderModifier:
                              description: |-
                                Only one action is supported per header name.
                                Configuration to set or add multiple values for a header must use RFC 7230
                                header value formatting, separating each value with a comma.
                              properties:
                                add:
                                  items:
                                    properties:
                                      name:
                                        maxLength: 256
                                        minLength: 1
                                        pattern: ^[a-z0-9!#$%&'*+\-.^_\x60|~]+$
                                        type: string
                                      value:
                                        type: string
                                    required:
                                      - name
                                      - value
                                    type: object
                                  maxItems: 16
                                  type: array
                                  x-kubernetes-list-map-keys:
                                    - name
                                  x-kubernetes-list-type: map
                                remove:
                                  items:
                                    type: string
                                  maxItems: 16
                                  type: array
                                set:
                                  items:
                                    properties:
                                      name:
                                        maxLength: 256
                                        minLength: 1
                                        pattern: ^[a-z0-9!#$%&'*+\-.^_\x60|~]+$
                                        type: string
                                      value:
                                        type: string
                                    required:
                                      - name
                                      - value
                                    type: object
                                  maxItems: 16
                                  type: array
                                  x-kubernetes-list-map-keys:
                                    - name
                                  x-kubernetes-list-type: map
                              type: object
                            type:
                              enum:
                                - RequestHeaderModifier
                                - ResponseHeaderModifier
                                - RequestRedirect
                                - URLRewrite
                                - RequestMirror
                              type: string
                            urlRewrite:
                              properties:
                                hostToBackendHostname:
                                  description: |-
                                    HostToBackendHostname rewrites the hostname to the hostname of the
                                    upstream host. This option is only available when targeting MeshGateways.
                                  type: boolean
                                hostname:
                                  description: Hostname is the value to be used to replace the host header value during forwarding.
                                  maxLength: 253
                                  minLength: 1
                                  pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
                                  type: string
                                path:
                                  description: Path defines a path rewrite.
                                  properties:
                                    replaceFullPath:
                                      type: string
                                    replacePrefixMatch:
                                      type: string
                                    type:
                                      enum:
                                        - ReplaceFullPath
                                        - ReplacePrefixMatch
                                      type: string
                                  required:
                                    - type
                                  type: object
                              type: object
                          required:
                            - type
                          type: object
                        type: array
                    type: object
                  matches:
                    description: |-
                      Matches describes how to match HTTP requests this rule should be applied
                      to.
                    items:
                      properties:
                        headers:
                          items:
                            description: |-
                              HeaderMatch describes how to select an HTTP route by matching HTTP request
                              headers.
                            properties:
                              name:
                                description: |-
                                  Name is the name of the HTTP Header to be matched. Name MUST be lower case
                                  as they will be handled with case insensitivity (See https://tools.ietf.org/html/rfc7230#section-3.2).
                                maxLength: 256
                                minLength: 1
                                pattern: ^[a-z0-9!#$%&'*+\-.^_\x60|~]+$
                                type: string
                              type:
                                default: Exact
                                description: Type specifies how to match against the value of the header.
                                enum:
                                  - Exact
                                  - Present
                                  - RegularExpression
                                  - Absent
                                  - Prefix
                                type: string
                              value:
                                description: Value is the value of HTTP Header to be matched.
                                type: string
                            required:
                              - name
                            type: object
                          type: array
                        method:
                          enum:
                            - CONNECT
                            - DELETE
                            - GET
                            - HEAD
                            - OPTIONS
                            - PATCH
                            - POST
                            - PUT
                            - TRACE
                          type: string
                        path:
                          properties:
                            type:
                              enum:
                                - Exact
                                - PathPrefix
                                - RegularExpression
                              type: string
                            value:
                              description: |-
                                Exact or prefix matches must be an absolute path. A prefix matches only
                                if separated by a slash or the entire path.
                              minLength: 1
                              type: string
                          required:
                            - type
                            - value
                          type: object
                        queryParams:
                          description: |-
                            QueryParams matches based on HTTP URL query parameters. Multiple matches
                            are ANDed together such that all listed matches must succeed.
                          items:
                            properties:
                              name:
                                minLength: 1
                                type: string
                              type:
                                enum:
                                  - Exact
                                  - RegularExpression
                                type: string
                              value:
                                type: string
                            required:
                              - name
                              - type
                              - value
                            type: object
                          type: array
                      type: object
                    minItems: 1
                    type: array
                required:
                  - default
                  - matches
                type: object
              type: array
            targetRef:
              description: |-
                TargetRef is a reference to the resource that represents a group of
                request destinations.
              properties:
                kind:
                  description: Kind of the referenced resource
                  enum:
                    - Mesh
                    - MeshSubset
                    - MeshGateway
                    - MeshService
                    - MeshServiceSubset
                    - MeshHTTPRoute
                  type: string
                mesh:
                  description: Mesh is reserved for future use to identify cross mesh resources.
                  type: string
                name:
                  description: |-
                    Name of the referenced resource. Can only be used with kinds: `MeshService`,
                    `MeshServiceSubset` and `MeshGatewayRoute`
                  type: string
                proxyTypes:
                  description: |-
                    ProxyTypes specifies the data plane types that are subject to the policy. When not specified,
                    all data plane types are targeted by the policy.
                  items:
                    enum:
                      - Sidecar
                      - Gateway
                    type: string
                  minItems: 1
                  type: array
                tags:
                  additionalProperties:
                    type: string
                  description: |-
                    Tags used to select a subset of proxies by tags. Can only be used with kinds
                    `MeshSubset` and `MeshServiceSubset`
                  type: object
              type: object
          type: object
        type: array
    type: object
